﻿using System.Text;
using System.Web.UI;

namespace Nasa8x.Web.UI
{

    [ToolboxData("<{0}:MessageBox runat=\"server\"></{0}:MessageBox>")]
    public sealed class MessageBox : Nasa8xControl
    {

        private MessageRenderMode _renderMode = MessageRenderMode.Script;

        public enum MessageRenderMode
        {
            Script,
            Div
        }


        public MessageRenderMode RenderMode
        {
            
            get
            {
                return _renderMode;

            }
            set
            {
                _renderMode = value;
            }
        }

        public void Show(string _message)
        {

            Message = _message;
        }


        public void Show(string _message, string _redirectUrl)
        {

            Message = _message;
            RedirectUrl = _redirectUrl;
        }


        public void Show(string _message, bool _isReloadUrl)
        {

            Message = _message;
            IsReloadUrl = _isReloadUrl;
        }

        public bool IsReloadUrl
        {
            get
            {
                object _o = ViewState["IsReloadUrl"];
                if (_o != null)
                {
                    return (bool)_o;

                }
                return false;
            }
            set
            {
                ViewState["IsReloadUrl"] = value;
            }


        }

        public string RedirectUrl
        {
            get
            {
                return (string)ViewState["RedirectUrl"];
            }
            set
            {
                ViewState["RedirectUrl"] = value;
            }

        }



        public string Message
        {
            get
            {
                return (string)ViewState["Message"];
            }
            set
            {
                ViewState["Message"] = value;

            }
        }

        protected override void OnInit(System.EventArgs e)
        {

            EnableViewState = false;

            base.OnInit(e);


        }


        protected override void Nasa8x_Render(HtmlTextWriter output)
        {
            if (!string.IsNullOrEmpty(Message))
            {
                string _msg = Message;
               
                StringBuilder _sb = new StringBuilder(1500);
               
                _sb.Append("<script type=\"text/javascript\">/*<![CDATA[*/");
                _sb.Append("$(function(){");

                _sb.Append("if(Alert){");

                _sb.Append("Alert(\"" + _msg + "\",'MessageBox',function(){");

                if (IsReloadUrl)
                {
                    _sb.Append("window.location=window.location.href;");
                }
                else
                {
                    if (!string.IsNullOrEmpty(RedirectUrl))
                    {
                        string _url = RedirectUrl.Replace("\\", "/");
                        _sb.AppendFormat("window.location='{0}';", _url);
                    }

                }

              

                _sb.Append("});");// callback
                
                
                _sb.Append("}else{");

                _sb.Append("alert(\"" + _msg.Replace("\n", "\\n").Replace("\\", "\\\\").Replace("'", "\'")+ "\");");


                if (IsReloadUrl)
                {

                    _sb.Append("window.location=window.location.href;");
                }
                else
                {
                    if (!string.IsNullOrEmpty(RedirectUrl))
                    {
                        string _url = RedirectUrl.Replace("\\", "/");
                        _sb.AppendFormat("location='{0}';", _url);
                    }

                }

                _sb.Append("}");// end if

                _sb.Append("});");// ready


                _sb.Append("/*]]>*/</script>");

                output.Write(_sb.ToString());

            }
        }




        private string RenderScript()
        {
            string _msg = Message.Replace("\n", "\\n");
            _msg.Replace("\\", "\\\\");
            _msg.Replace("'", "\'");
            StringBuilder _sb = new StringBuilder(1500);

            _sb.Append("<script type=\"text/javascript\">/*<![CDATA[*/");
            _sb.Append("$(document).ready(function(){");

            _sb.Append("Alert(\"" + _msg + "\",'MessageBox',function(){");

            if (IsReloadUrl)
            {
                _sb.Append("window.location=window.location.href;");
            }
            else
            {
                if (!string.IsNullOrEmpty(RedirectUrl))
                {
                    string _url = RedirectUrl.Replace("\\", "/");
                    _sb.AppendFormat("window.location='{0}';", _url);
                }

            }

            _sb.Append("});");// callback

            _sb.Append("});");


            _sb.Append("/*]]>*/</script>");

            return _sb.ToString();
            
        }

        //include jquery.alerts
        //protected override void Nasa8x_Render(HtmlTextWriter output)
        //{



        //    if (!string.IsNullOrEmpty(Message))
        //    {
        //        string _msg = Message.Replace("\n", "\\n");
        //        _msg.Replace("\\", "\\\\");
        //        _msg.Replace("'", "\'");
        //        StringBuilder _sb = new StringBuilder();
        //        _sb.Append("<script type=\"text/javascript\">");
        //        _sb.AppendFormat("window.Nasa8x_Init_MessageBox_{0} = function()", ClientID);
        //        _sb.Append("{if (!window.Nasa8x_Alerts_Loaded) {");
        //        _sb.AppendFormat("setTimeout('Nasa8x_Init_MessageBox_{0}()', 50); return", ClientID);
        //        _sb.Append("};");

        //        _sb.Append("Alert(\"" + _msg + "\",'MessageBox',function(){");

        //        if (IsReloadUrl)
        //        {
        //            _sb.Append("window.location=window.location.href;");
        //        }
        //        else
        //        {
        //            if (!string.IsNullOrEmpty(RedirectUrl))
        //            {
        //                string _url = RedirectUrl.Replace("\\", "/");
        //                _sb.AppendFormat("window.location='{0}';", _url);
        //            }

        //        }

        //        _sb.Append("});");// callback

        //        _sb.Append("};");

        //        _sb.AppendFormat("Nasa8x_Init_MessageBox_{0}();", ClientID);
        //        /*
        //           _sb.AppendFormat("function MessageBox_Init_{0}()",ClientID);
        //           _sb.Append("{");

        //           _sb.Append("Alert(\"" + _msg + "\",'MessageBox',function(){");

        //           if (IsReloadUrl)
        //           {
        //               _sb.Append("window.location=window.location.href;");
        //           }
        //           else
        //           {
        //               if (!string.IsNullOrEmpty(RedirectUrl))
        //               {
        //                   string _url = RedirectUrl.Replace("\\", "/");
        //                   _sb.AppendFormat("window.location='{0}';", _url);
        //               }

        //           }


        //           _sb.Append("});");// callback
        //           _sb.Append("};");//

        //           _sb.AppendFormat("window.onload=MessageBox_Init_{0}();", ClientID);
        //            * 
        //            * */
        //        _sb.Append("</script>");

        //        output.Write(_sb.ToString());

        //    }
        //}


        //No include jquery.alerts

        //protected override void Nasa8x_Render(HtmlTextWriter output)
        //{
        //    if (!string.IsNullOrEmpty(Message))
        //    {
        //        string _msg = Message.Replace("\n", "\\n");
        //        _msg.Replace("\\", "\\\\");
        //        _msg.Replace("'", "\'");
        //        StringBuilder _sb = new StringBuilder();
        //        _sb.Append("<script type=\"text/javascript\">");
        //        _sb.Append("alert(\"" + _msg + "\");");


        //        if (IsReloadUrl)
        //        {

        //            _sb.Append("location=window.location.href;");
        //        }
        //        else
        //        {
        //            if (!string.IsNullOrEmpty(RedirectUrl))
        //            {
        //                string _url = RedirectUrl.Replace("\\", "/");
        //                _sb.AppendFormat("window.location='{0}';", _url);
        //            }

        //        }



        //        _sb.Append("</script>");

        //        output.Write(_sb.ToString());

        //    }



        //}
    }
}
